﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Sistema.WF.Componentes.FormulariosBase;
using Sistema.Dominio;
using Sistema.Util;

namespace Sistema.WF.View.NFe
{
    public partial class FRM_ExportarNota : FRM_pai
    {
        public FRM_ExportarNota()
        {
            InitializeComponent();
        }

        private void CMD_sair_Click(object sender, EventArgs e)
        {
            this.Close();
            this.Dispose();
        }

        private void CriarArquivo(IList<NFeInfo> dados)
        {
            Arquivo arquivo = new Arquivo();

            for(int i=0; i<dados.Count;i++)
            {
               String nomeArquivo = "nfe"+IdentificaXml.completarNumeroNota(dados[i].Numero)+".xml";
               arquivo.CriarArquivo(dados[i].DadosEnvio[0].XmlAssinado, nomeArquivo, Properties.Resources.CaminhoArquivosCriar);
            }
            
        }

        private void CMD_exportar_Click(object sender, EventArgs e)
        {
         
            DirBrowser.ShowDialog();
            this.ExportarNotas();
            DirBrowser.Dispose();
            CaixaMensagem.CaixaDeMensagem("Exportação realizada com sucesso!", "Exportação de Nota Fiscal");
        
        }
 
        private void ExportarNotas()
        {
           String Xml = String.Empty;
           Arquivo arquivo = new Arquivo();
           Sistema.NFe.NFe pesquisaNotas = new Sistema.NFe.NFe();

           DateTime inicio = DTP_inicial.Value;
           DateTime fim = DTP_final.Value;

           IList<NFeInfo> lista = pesquisaNotas.Listar();

           String caminho = Properties.Resources.CaminhoArquivoProc;

           IList<NFeInfo> notas = new List<NFeInfo>();

           foreach(NFeInfo a in lista)
           {
               if(a.DataOperacao >= inicio && a.DataOperacao <= fim)
               {
                   notas.Add(a);
               }

           }

           for (int i = 0; i < notas.Count;i++ )
            {
                String nomeArquivo = "NFe"+IdentificaXml.completarNumeroNota(notas[i].Numero)+".xml";
                if (notas[i].StatusNota == enumStatusNota.Rejeitada)
                {
                    
                }
                else if (notas[i].StatusNota != enumStatusNota.Liberada && notas[i].StatusNota != enumStatusNota.Rejeitada)
                {
                    Xml = notas[i].DadosOcorrencias.Last().XmlOcorrencia.ToString();
                    arquivo.CriarArquivo(Xml, nomeArquivo, DirBrowser.SelectedPath); 
                }
               else
                {
                    IList<String> file = arquivo.ListarArquivo(caminho,"*"+notas[i].Numero+".xml");
                    Xml = new Arquivo().LerArquivo(file.First());
                    arquivo.CriarArquivo(Xml,nomeArquivo ,DirBrowser.SelectedPath); 
                }
                
               
               
            } 
           
          
        }
    }
}

